package inet.app.controller.parser;


import inet.app.model.object.KqGiai_Item;
import inet.app.model.util.StringTool;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;


public class Parser_XsSync_Live {
	Calendar caln = Calendar.getInstance();
 	SimpleDateFormat dfn = new SimpleDateFormat("dd/MM/yyyy");
	String date_current = dfn.format(caln.getTime());
	
	private String NAME = "XSSYNC_RESP";
	private ArrayList<KqGiai_Item> list = new ArrayList<KqGiai_Item>();
	String last_update0= "10/04/2013";
	String code0 = "XSTD";
	String date0 = "12/04/2013";
	String dacbiet0 = ".....";
	String giai10 = ".....";
	String giai20 = ".....-.....";
	String giai30 = ".....-.....-.....-.....-.....-.....";
	String giai40 = ".....-.....-.....-.....";
	String giai50 = ".....-.....-.....-.....-.....-.....";
	String giai60 = ".....-.....-.....";
	String giai70 = ".....-.....-.....-.....";
	String giai80 = ".....";
	
	public Parser_XsSync_Live() {
	}
	
	public ArrayList<KqGiai_Item> getList(String json) {
		Hashtable<Integer, String> hash = getHashPrize(json);

		if(hash==null) return null;
		for (int i = 0; i < 9; i++) {
//			System.out.println(i+": "+hash.get(i));
		}
		System.out.println("DATE TRONG LIVE PARSER " + date_current);
		int Length_Live;
		String[] data = json.split("\\|\\|\r\n");
		System.out.println("DATA SIZE " + data.length);
		String[] item_first = data[0].split("\\|");
		
		Length_Live = item_first.length;
		
		String name = item_first[0];
		
		String status = item_first[1];
		String codenew = item_first[2];
		
		if (status.equals("0") && name.equals(NAME)&&codenew.contains(date_current)) {
			System.out.println("CHAY VAO PAR 1");
			int i = 0;
			KqGiai_Item item;
			String kqgiai[] ;
			String last_update, code,date,dacbiet= null, giai1 = null, giai2= null,giai3= null,giai4 = null,giai5= null,giai6= null,giai7= null,giai8= null;
			
			for (i = 0; i < data.length; i++) {
				kqgiai = data[i].split("\\|");
				last_update= kqgiai[2];
				code = kqgiai[3];
				if(kqgiai[4].split(" ")[0]!=""||kqgiai[4].split(" ")[0]!=null)
					date=kqgiai[4].split(" ")[0];
				else
				date = kqgiai[2].split(" ")[0];
				
				if (!code.equals("XSTD")) {
					dacbiet = ".....";
					giai1 = ".....";
					giai2 = ".....-.....";
					giai3 = ".....-.....-.....-.....-.....-.....";
					giai4 = ".....-.....-.....-.....";
					giai5 = ".....-.....-.....-.....-.....-.....";
					giai6 = ".....-.....-.....";
					giai7 = ".....-.....-.....-.....";
					giai8 = ".....";
					item = new KqGiai_Item(code,code, date, dacbiet, giai1, giai2, giai3, giai4, giai5, giai6, giai7,giai8);
//					list.add(item);
				}else {
				for (int j = 5; j < kqgiai.length; j++) {
					if(kqgiai[j].substring(0,1).equals("0")) dacbiet = kqgiai[j];
					else if(kqgiai[j].substring(0,1).equals("1")) giai1 = kqgiai[j];
					else if(kqgiai[j].substring(0,1).equals("2")) giai2 = kqgiai[j];
					else if(kqgiai[j].substring(0,1).equals("3")) giai3 = kqgiai[j];
					else if(kqgiai[j].substring(0,1).equals("4")) giai4 = kqgiai[j];
					else if(kqgiai[j].substring(0,1).equals("5")) giai5 = kqgiai[j];
					else if(kqgiai[j].substring(0,1).equals("6")) giai6 = kqgiai[j];
					else if(kqgiai[j].substring(0,1).equals("7")) giai7 = kqgiai[j];
					else if(kqgiai[j].substring(0,1).equals("8")) giai8 = kqgiai[j];
				}
				if(dacbiet== null||dacbiet.equals("")||dacbiet.equals("0:"))dacbiet = "0:.....";
				if(giai1== null ||giai1.equals("")||giai1.equals("1:")||giai1.equals("1:null"))giai1 = "1:.....";
				if(giai2== null ||giai1.equals("")||giai2.equals("2:")||giai2.equals("2:null"))giai2 = "2:.....-.....";
				if(giai3== null ||giai1.equals("")||giai3.equals("3:")||giai3.equals("3:null"))giai3 = "3:.....-.....-.....-.....-.....-.....";
				if(giai4== null ||giai1.equals("")||giai4.equals("4:")||giai4.equals("4:null"))giai4 = "4:.....-.....-.....-.....";
				if(giai5== null ||giai1.equals("")||giai5.equals("5:")||giai5.equals("5:null"))giai5 = "5:.....-.....-.....-.....-.....-.....";
				if(giai6== null ||giai1.equals("")||giai6.equals("6:")||giai6.equals("6:null"))giai6 = "6:.....-.....-.....";
				if(giai7== null ||giai1.equals("")||giai7.equals("7:")||giai7.equals("7:null"))giai7 = "7:.....-.....-.....-.....";
				if(giai8== null ||giai1.equals("")||giai8.equals("8:")||giai8.equals("8:null"))giai8 = "8:.....";
				
				dacbiet=dacbiet.split(":")[1];
				giai1=giai1.split(":")[1];
				giai2=giai2.split(":")[1] +"-.....";
				giai3=giai3.split(":")[1] +"-.....-.....-.....-.....-.....";
				giai4=giai4.split(":")[1] +"-.....-.....-.....";
				giai5=giai5.split(":")[1] +"-.....-.....-.....-.....-.....";
				giai6=giai6.split(":")[1] +"-.....-.....";
				giai7=giai7.split(":")[1] +"-.....-.....-.....";
				giai8=giai8.split(":")[1];
				
				item = new KqGiai_Item(code,code, date, dacbiet, giai1, giai2, giai3, giai4, giai5, giai6, giai7,giai8);
				
					
//				list.add(item);
					}
				list.add(item);
			}
			return list;
		} else{
			System.out.println("CHAY VAO PAR 2");
			KqGiai_Item item2 = new KqGiai_Item(code0,code0, date0, dacbiet0, giai10, giai20, giai30, giai40, giai50, giai60, giai70,giai80);
			list.add(item2);
			return list;
		}
	}
	public static Hashtable<Integer, String> getHashPrize(String strReceived){
		if(strReceived==null) return null;
		Hashtable<Integer, String> result = new Hashtable<Integer, String>();
		Collection<String> cTemp = StringTool.parseString(strReceived, "|");
		if(cTemp==null || cTemp.isEmpty()) return null;
		String str = "";
		
		String key;
		String value;
		for(Iterator<String> it=cTemp.iterator(); it.hasNext(); ){
			str = it.next();
			//System.out.println("str="+str);
			if(str.indexOf(":")>0){
				key = str.substring(0, str.indexOf(":"));
				value = str.substring(str.indexOf(":")+1);
				if(key==null || !StringTool.isNumberic(key) || value==null) continue;
				result.put(Integer.parseInt(key), value);
			}
		}
		return result;
	}
}
